perm filename RULES.DOC[DOC,BGB] blob sn#047844 filedate 1973-06-10 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00010 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	0. TITLE PAGE.	GEM RULES.
C00003 00003	1. THE GEM SYSTEM.
C00007 00004	2. GEM APPLICATIONS.
C00009 00005	3. GOALS  -  GEM WORK TO BE DONE.
C00013 00006	4. PPPN AND FILE CONTENTS.
C00015 00007	5. MACHINE CODING RULES.
C00016 00008		5. CONTINUED.	EXAMPLE OF A SUBROUTINE.
C00018 00009		5. CONTINUED.	MACHINE CODING RULES.
C00019 00010	6. RULES ABOUT EDITING RULES.DOC
C00020 ENDMK
C⊗;
0. TITLE PAGE.	GEM RULES.

GEOMETRIC MODELING SYSTEM RULES.

GEM HACKERS:
	BRUCE G. BAUMGART, 378-6038.
	TOVAR MOCK, 327-2496.
GEM USERS:
1. THE GEM SYSTEM.
	
	The overall  project is called  "Geometric Modeling"  or GEM.
The geometric modeling system consists of three kinds of programs, 2D
image  processing  programs,  3D  object  processing  programs,   and
miscellaneous  programs.  Five  specific programs  are  intended  for
users:  TVFONT,   CRE3,    GEOMED, GEOMEL,   and  GEOMES.  These five
programs are documented  individually elsewhere and are  approachible
in  the usual external fashion of communication  between implementing
programmer and user programmer.  On the other  hand this document  is
meant for "hackers"  rather than "users";  a hacker is one  who wants
to take a portion  of GEM code and to adapt it to his application; or
wishs  to contribute  to  the  GEM  system.  Thus  this  document  is
dynamic,  and  can be  used  as  a  journal, mailbox,  or  newspaper;
however  the main reason for  the document is as  a written record of
GEM rules  and conventions;  perhaps if  as the  project developes  a
program (the "CHAIR" for  chairman) can be developed to maintain this
document and indeed administer and  govern the GEM project  according
to the wishs and needs of the participants.

	TVFONT is  for making  type font  bit arrays from  television
images, or for rescaling existing fonts.

	CRE   is  converts a  sequence of  digital  television images
into a video intensity contour data structure. Auxiliary  routines of
CRE  provide cart and turntable control and XGP video output.

	GEOMED is a 3D drawing  program accessed thru a one character
jump  table.  GEOMED  can construct arbitrary  polyhedral objects and
display them with  hidden lines eliminated.   GEOMED can also  accept
CRE's  perceived images and  form a polyhedral world model consistent
with such images.

	GEOMEL is the bulk of GEOMED  embedded in a LISP core  image.
That is  the  subroutines comprising  Geomed are  accessible in  LISP
notation,   thus  providing a geometric  language for  physical world
modeling and physical action simulation.

	GEOMES is the bulk of  GEOMED embedded in a SAIL core  image.
That is the subroutines comprising GEOMED become SAIL accessible.
2. GEM APPLICATIONS.

	The following applications of GEM  are either being seriously
pursued  by named individual,  or are opportunities  about which some
notes and thinking exists.

	1. Turn table object perception. BGB's Thesis 1st priority.
	2. Cart course navigation. BGB's Thesis 2nd priority.
	3. Interactive mechanical drawing. TVR 1st priority.
	4. Textbook and document figure drawing. TVR 2nd priority.
	5. Architectual drawing.
	6. Animation; hand-eye's arm, insect walker, tower collapse,
	7. Type Font Contruction. BGB & TVR. completed.
	8. Brain anatomy modeling. KRD.
	9. Geometric Planner; tower building,
	10. Geometric Programming Language, GPL1.
	11. Vision by Verification.
	12. Object Recognition.
	13. GEM based Semantic modeling.
	14. Alternate hand-eye project.
3. GOALS  -  GEM WORK TO BE DONE.

BGB LAST WEEK OF APRIL.

	Get CRE's polygon compare and connect working.
	Get final draft of CRE3 written.
	Get CRE3 final external files into GEOMED.
	Get 3D polygon, vertex and camera locus solvers.
	Try to ignore other people.
	Worry about assimulating TVR.

BGB LATER.

	Turn table perception demo.
	CRE3 publication.
	GEOMED, GEOMEL, GEOMES draft documentation.
	Get a draft of GEM proposals.
	Newton routines
	envelope routines


TVR IMMEDIATE SUGGESTED TASK LIST.

	Get GEOMED converted to TVRHDR conventions.
	Get Text nodes into GEOMED; under command letter "T";
		command execution subr named XTEXT.
		pointers to text nodes in TJOINT link position
		of vertices.
		Dangling Vertices should work and be allowed
		for text nodes; if some operator can discover
		and choke on a dangling vertex then that operator
		should test the TXTBIT first.
	Get the dry rot out of GEOMED display, arith and memory routines.
		(but you must tell me about memory design before changing
		anything major).
	Get Data Disc III simulator into GEOMED and a IIIFLG and DDFLG
		in the global status.
	Try to help people who have GEOMED questions.

TVR LATER SUGGESTED TASK LIST.

	Get arrow headed edges in.
	Get dangling edges in. (must be marked to be ignored by OCCULT).
	Get GEOMES and GEOMEL reset and reentry working.
	Get circular arcs and spline arcs edge display options in.

ANY BODY.

	Get better fatal message. Prints stack, re starts if not running
		under BGB or TVR pppn.
	Worry about bugs in "∂" node contents display.
	Get MAKE VIDEO some place.
	Get SHADOW written. (probably BGB).
	Worry about additional external formats.
	Get direct XGP output.
	Get CRE3 under pity thru GEOMED.
	Get solar emphemeris in.
	Get a macro command facility in.
	Get execution of external command files for GEOMED and GEOMEL.
	Get better "?" help command, like TVFONT, into GEOMED.
	

4. PPPN AND FILE CONTENTS.

	[GEM,BGB]	Geometric Modeling, home of GEOMED.
	[CRE,BGB]	Contour-Region-Edge, home of CRE3.
	[CAR,BGB]	Cart Project.
	[DAT,BGB]	Data, television pictures.
	[DOC,BGB]	Documentation.
	[0,BGB]		Thesis work.
	[1,BGB]		Misc. work.
	[LSP,BGB]	Gemetric modeling embedded in LISP. GEOMEL.
	[SAI,BGB]	Gemetric modeling embedded in SAIL. GEOMES.
	[XGP,TVR]	Xerox Graphic Printer, home of TVFONT


FILES.

	One major program is on a PPPN. Files extensions are used.
An indirect command file is provided for assembly and load of program.
Our programming language is PDP-10 machine code via the FAIL assembler.
A program consists of a header file, a node declaration file,
files of major subroutines, files of minor subroutines,
and our subroutine library file.

5. MACHINE CODING RULES.


SUBROUTINES.

	A typical subroutine is formated as follows: there is a  SUBR
line  (yes TVR, "SUBR" is really "NSUBR") the subroutine's COMMENT, a
separation line (blanks or underbars), accumulator declarations,  the
code of the subroutine, and the SUBEND line. Subroutines are
supposed to always fit on a single physical page. (see example in figure
xx below).

	Subroutines are composed of  "paragraphs"  of  code,  a  code
paragraph  is  several lines of code that hangs together and that can
be explained in a single line comment.
	5. CONTINUED.	;EXAMPLE OF A SUBROUTINE.

SUBR(MATE2)PTR1,PTR2	FIND VERTEX MATES BETWEEN PTR1 & PTR2.
BEGIN MATE2

COMMENT/  Arguments  are expected to be AOBJN accumulators -M,,U1 and
-N,,V1 of the two sets of vertices of a window. In this  window,  for
all  the vertices of the first polygon find the closest vertex of the
second polygon. If the closest vertex is within an epsilon, a pointer
to the window block position of the second polygon's vertex is DIP'ed
into the window block position of the first polygon's vertex./

	ACCUMULATORS{PTR1,PTR2,U,V,R,C,R1,C1,RMINIM,VMIN}
	;GLOBALS{EPSLN2}

;FOR ALL VERTICES U OF PTR1.
	LAC PTR1,ARG2
L1:	LAC U,(PTR1)↔ROW R1,U↔COL C1,U
	LAC RMINIM,EPSLN2↔DZM VMIN

;FOR ALL VERTICES V OF PTR2.
	LAC PTR2,ARG1
L2:	LAC V,(PTR2)

;IS THE DISTANCE BETWEEN U AND V LESS THAN R MINIMUM.
	ROW R,V↔SUB R,R1↔IMUL R,R
	COL C,V↔SUB C,C1↔IMUL C,C↔ADD R,C
	CAML R,RMINIM↔GO .+3
	DAC R,RMINIM↔DAPZ PTR2,VMIN
	AOBJN PTR2,L2

;SAVE POINTER OF VERTEX V OF CLOSEST APPROACH TO VERTEX U.
	DIP VMIN,(PTR1)
	AOBJN PTR1,L1
	POP2J
BEND MATE2;(BGB)15-APR-73.
	5. CONTINUED.	MACHINE CODING RULES.
NODES.

COMMENTS.

ALTERNATE MNEMONICS.

ACCUMULATOR CONVENTIONS.

DOCUMENTATION.
6. RULES ABOUT EDITING RULES.DOC;

	Trivail addition and deletion is always allowed.
such as for spelling and punctiation.

	For April and May let's just add serial numbered
articles as subject areas come to mind. We will reformat
at the end of May.

	The level of "authority" corresponds to the serial
numbered list of names on the title page;